package com.xbongbong.pro.domain.entity;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.domain.entity.StageProcessEntity;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * 备份阶段流程表
 * 
 * @author mingliang.cao
 * 
 * @date 2021-11-16
 */
@Getter
@Setter
public class StageProcessRetainEntity implements Serializable {
    private static final long serialVersionUID = -5472736849080671610L;
    /**
     * 主键
     */
    private Long id;

    private String corpid;

    /**
     * 备份应用Id, 用来区别同公司同应用同表单的多次备份
     */
    private Long retainAppId;
    /**
     * 备份表单id
     */
    private Long retainFormId;
    /**
     * 备份阶段流程id
     */
    private Long retainStageProcessId;

    /**
     * 阶段流程名称
     */
    private String name;

    /**
     * 阶段流程版本名称
     */
    private String versionName;

    /**
     * 阶段流程版本
     */
    private Integer versionId;

    /**
     * 阶段流程是否启用（0不启用、1启用）
     */
    private Integer enable;

    /**
     * 阶段停留单位【1时、2天、3周、4月】
     */
    private Integer stageUnit;

    /**
     * 允许回退阶段（0不允许、1允许）
     */
    private Integer allowBack;

    /**
     * 允许新建选择阶段（0不允许、1允许）
     */
    private Integer allowNewSelect;


    /**
     * 哪些人允许新建选择阶段，空值代表所有人都允许
     */
    private JSONArray allowNewSelectUser;
    /**
     * 阶段用时（0不显示、1显示）
     */
    private Integer showTimeUse;

    /**
     * 阶段停留时长（0不显示、1显示）
     */
    private Integer showTimeStay;

    /**
     * 任务完成情况（0不显示、1显示）
     */
    private Integer showWorkCompletion;

    /**
     * 公司平均完成时长（0不显示、1显示）
     */
    private Integer showAverageCompletionTime;

    /**
     * 触发条件
     */
    private JSONArray triggerCondition;

    /**
     * 1：归档、2：未归档
     */
    private Integer isArchive;

    /**
     * 创建者id
     */
    private String creatorId;

    /**
     * 是否历史数据迁移过来时最早默认生成的流程版本
     */
    private Integer oldTransferVersion;

    /**
     * 创建时间
     */
    private Long addTime;

    /**
     * 更新时间
     */
    private Long updateTime;

    /**
     * 删除标记
     */
    private Integer del;

    public StageProcessRetainEntity(){
        del = 0;
    }

    public StageProcessRetainEntity(StageProcessEntity item, Long retainAppId) {
        this.corpid = item.getCorpid();
        this.retainAppId = retainAppId;
        this.retainFormId = item.getFormId();
        this.retainStageProcessId = item.getId();
        this.name = item.getName();
        this.versionName = item.getVersionName();
        this.versionId = item.getVersionId();
        this.enable = item.getEnable();
        this.stageUnit = item.getStageUnit();
        this.allowBack = item.getAllowBack();
        this.allowNewSelect = item.getAllowNewSelect();
        this.allowNewSelectUser = item.getAllowNewSelectUser();
        this.showTimeUse = item.getShowTimeUse();
        this.showTimeStay = item.getShowTimeStay();
        this.showWorkCompletion = item.getShowWorkCompletion();
        this.showAverageCompletionTime = item.getShowAverageCompletionTime();
        this.triggerCondition = item.getTriggerCondition();
        this.isArchive = item.getIsArchive();
        this.creatorId = item.getCreatorId();
        this.oldTransferVersion = item.getOldTransferVersion();
        this.addTime = item.getAddTime();
        this.updateTime = item.getUpdateTime();
        this.del = item.getDel();
    }
}